home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1146 / 1146.xpi / chrome / screengrab.jar / content / Target.js < prev    next >
Text File  |  2009-03-09  |  4KB  |  116 lines

  1. /**
  2.  * Defines a capture target for screengrab.
  3.  */
  4. screengrab.Target = function() {
  5.     this.contentBrowser = null;
  6.     this.dimensions = null;
  7. }
  8. screengrab.Target.prototype = {
  9.     getBrowser : function() {
  10.         return this.contentBrowser;
  11.     },
  12.     getDimensions : function() {
  13.         return this.dimensions;
  14.     },
  15.     obtainDimensions : function(onObtained) {
  16.         if (onObtained) {
  17.             try {
  18.                 onObtained(this.contentBrowser, this.dimensions);
  19.             } catch (error) {
  20.                 dump(error);
  21.             }
  22.         }
  23.     }
  24. }
  25.  
  26. /**
  27.  * Target to capture the entire window - this will give screen coords
  28.  */
  29. screengrab.WindowTarget = function() {}
  30. screengrab.WindowTarget.superclass = screengrab.Target.prototype;
  31. screengrab.WindowTarget.prototype = {
  32.     obtainDimensions : function(onObtained) {
  33.         // the browser doesn't matter, just fill it in to avoid any potential nulls...
  34.         this.contentBrowser = new screengrab.Browser(screengrab.Browser.contentWindow());
  35.         this.dimensions = screengrab.Browser.physicalDimensions();
  36.         screengrab.Target.prototype.obtainDimensions.call(this, onObtained);
  37.     }
  38. }
  39.  
  40. /**
  41.  * Target to capture the entire contents of a frame
  42.  */
  43. screengrab.FrameTarget = function() {}
  44. screengrab.FrameTarget.superclass = screengrab.Target.prototype;
  45. screengrab.FrameTarget.prototype = {
  46.     obtainDimensions : function(onObtained) {
  47.         this.contentBrowser = new screengrab.Browser(screengrab.Browser.contentFrame());
  48.         this.dimensions = this.contentBrowser.getCompletePageRegion();
  49.         screengrab.Target.prototype.obtainDimensions.call(this, onObtained);
  50.     }
  51. }
  52. /**
  53.  * Target to capture the visible contents of a window
  54.  */
  55. screengrab.VisibleTarget = function() {}
  56. screengrab.VisibleTarget.superclass = screengrab.Target.prototype;
  57. screengrab.VisibleTarget.prototype = {
  58.     obtainDimensions : function(onObtained) {
  59.         this.contentBrowser = new screengrab.Browser(screengrab.Browser.contentWindow());
  60.         this.dimensions = this.contentBrowser.getVisibleDocumentRegion();
  61.         screengrab.Target.prototype.obtainDimensions.call(this, onObtained);
  62.     }
  63. }
  64. /**
  65.  * Target to capture the entire screen
  66.  */
  67. screengrab.ScreenTarget = function() {}
  68. screengrab.ScreenTarget.superclass = screengrab.Target.prototype;
  69. screengrab.ScreenTarget.prototype = {
  70.     obtainDimensions : function(onObtained) {
  71.         this.contentBrowser = new screengrab.Browser(screengrab.Browser.contentWindow());
  72.         this.dimensions = new screengrab.Box(0, 0, screen.width, screen.height);
  73.         screengrab.Target.prototype.obtainDimensions.call(this, onObtained);
  74.     }
  75. }
  76.  
  77. /**
  78.  * Target to capture a user specified selection of a window
  79.  */
  80. screengrab.SelectionTarget = function() {
  81.     this.contentBrowser = new screengrab.Browser(screengrab.Browser.contentWindow());
  82. }
  83. screengrab.SelectionTarget.superclass = screengrab.Target.prototype;
  84. screengrab.SelectionTarget.prototype = {
  85.     obtainDimensions : function(onObtained) {
  86.         var me = this;
  87.         var viewport = screengrab.Browser.contentWindow();
  88.         SGSelection.browser = new screengrab.Browser(viewport);
  89.         SGSelection.callback = function(dimensions) {
  90.             me.dimensions = dimensions.offsetCopy(viewport.scrollX, viewport.scrollY);
  91.             screengrab.Target.prototype.obtainDimensions.call(me, onObtained);
  92.         }
  93.         SGSelection.toggleDraw();
  94.     }
  95. }
  96.  
  97. /**
  98.  * Target to capture a specific DOM element in the browser
  99.  */
  100. screengrab.ElementTarget = function() {
  101.     this.contentBrowser = new screengrab.Browser(screengrab.Browser.contentWindow());
  102. }
  103. screengrab.ElementTarget.superclass = screengrab.Target.prototype;
  104. screengrab.ElementTarget.prototype = {
  105.     obtainDimensions : function(onObtained) {
  106.         var me = this;
  107.         new screengrab.Highlighter(
  108.             screengrab.Browser.contentWindow(), // the current tab window
  109.             function(event) {
  110.                 me.contentBrowser = new screengrab.Browser(screengrab.Browser.frameFor(event.target));
  111.                 me.dimensions = me.contentBrowser.getDocument().getDimensionsOf(event.target);
  112.                 screengrab.Target.prototype.obtainDimensions.call(me, onObtained);
  113.             });
  114.     }
  115. }
  116.